import {
  baseProps,
  makeBooleanProp,
  makeNumberProp,
  makeRequiredProp,
  makeStringProp,
} from 'wot-design-uni/components/common/props';

/** 浮动面板参数 */
export const floatingPanelProps = {
  ...baseProps,
  /**
   * 是否显示
   * @default false
   * @type {boolean}
   */
  modelValue: { ...makeBooleanProp(false), ...makeRequiredProp(Boolean) },
  /**
   * 是否显示遮罩层
   * @default true
   * @type {boolean}
   */
  mask: makeBooleanProp(true),
  /**
   * 是否允许点击遮罩层关闭
   * @default true
   * @type {boolean}
   */
  maskClosable: makeBooleanProp(true),
  /**
   * 遮罩样式
   * 类型：string
   * 默认值：''
   */
  maskStyle: makeStringProp(''),
  /**
   * 动画持续时间(ms)
   * @default 200
   * @type {number}
   */
  duration: makeNumberProp(200),
  /**
   * 弹出面板是否设置底部安全距离（iphone X 类型的机型）
   * @default true
   * @type {boolean}
   */
  safeAreaInsetBottom: makeBooleanProp(true),
  /**
   * 弹层内容懒渲染，触发展示时才渲染内容。
   * @default true
   * @type {boolean}
   */
  lazyRender: makeBooleanProp(true),
  /**
   * 层级
   * @default 400
   * @type {number}
   */
  zIndex: makeNumberProp(400),
  /**
   * 弹层自定义根节点样式
   */
  popupCustomStyle: makeStringProp(''),
  /**
   * 弹层自定义根节点样式类
   */
  popupCustomClass: makeStringProp(''),
  /**
   * 设置自定义锚点，( number | string )，默认值 ['30%', '60%']。
   */
  anchors: {
    type: Array as PropType<(number | string)[]>,
    default: () => ['30%', '60%'],
  },
  /**
   * 是否允许内容区容器拖拽，默认值为 true
   */
  contentDraggable: makeBooleanProp(true),
  /**
   * 是否显示滚动条，默认值为 true
   */
  showScrollbar: makeBooleanProp(true),
  /**
   * 滑动关闭，默认值为 true
   */
  slideClosable: makeBooleanProp(true),
};
